package com.xyd.mapper;

import com.xyd.entity.Cart;
import com.xyd.entity.OrderDetail;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 类描述：
 *
 * @author 张吉哲
 * @date 2021/1/11 16:26
 */
public interface OrderDetailMapper {

  /**
   * 通过订单id查询订单详情
   *
   * @param eoId 订单id
   * @return 详情列表
   */
  List<OrderDetail> getOrderDetailByEoId(Long eoId);

  /**
   * 修改订单中该商品的数量
   *
   * @param newNum 商品数量
   * @param price  该商品总价
   * @param eodId  订单明细id
   * @return 是否成功
   */
  Boolean changeProductNum(@Param("newNum") int newNum, @Param("price") double price,
      @Param("eodId") int eodId);

  /**
   * 根据订单明细id删除订单明细
   *
   * @param eodId 订单明细id
   * @return 是否成功
   */
  Boolean delOrderByEodId(Long eodId);

  /**
   * 查询订单中是否有该商品
   *
   * @param eoId 订单id
   * @param epId 商品id
   * @return 是否有该商品
   */
  Long getEodIdByEpId(@Param("eoId") Long eoId, @Param("epId") Long epId);

  /**
   * 像订单明细表中添加商品信息
   *
   * @param eoId    订单编号
   * @param epId    商品编号
   * @param epPrice 商品单价
   * @return 是否成功
   */
  Boolean addProductToOrderDetail(@Param("eoId") Long eoId, @Param("epId") Long epId,
      @Param("epPrice") Double epPrice);

  /**
   * 点击放入购物车，如果订单有该商品，将该订单数量+1，价钱更改
   *
   * @param eoId 订单编号
   * @param epId 商品编号
   * @return 是否成功
   */
  Boolean changeProduct(@Param("eoId") Long eoId, @Param("epId") Long epId);

  /**
   * 向订单详情中添加商品信息
   *
   * @param carts 商品信息
   * @param eoId  订单id
   * @return 是否成功
   */
  boolean addProducts(@Param("carts") List<Cart> carts, @Param("eoId") Long eoId);
}
